package java学习.算法.动态规划.暴力递归与动态规划;

import org.hamcrest.core.Is;

import java.util.Stack;

/**
 * **************
 * 项目名称: 蓝桥杯 <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦 <br/>
 * 创建时间: 2022/5/17 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
public class 用递归逆序一个栈 {
    public static void main(String[] args) {
        Stack<Integer> s = new Stack<>();
        s.push(3);        s.push(2);        s.push(1);
//        System.out.println(getBottomOfStack(s));
        reverseStack(s);
        while (!s.isEmpty()){
            System.out.println(s.pop());
        }
    }
    public static void reverseStack(Stack<Integer> stack){
        if (stack.isEmpty()){
            return;
        }
        // 每次都取出栈底 ， 直到栈为空了 就向上返回，并压入最近的栈底
        int bottom = getBottomOfStack(stack);

        reverseStack(stack);

        stack.push(bottom);

    }


//    1. 将栈底的元素取出
    public static int getBottomOfStack(Stack<Integer> stack){
        int Top = stack.pop();

        if (stack.isEmpty()){
            return Top;
        }
        int last = getBottomOfStack(stack);

        stack.push(Top);
        return last;

    }

}
